package br.com.locanet.bean.impl;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.locanet.bean.IEntity;


@Entity
@Table(name = "filmes_locacoes")
@NamedQueries({
	@NamedQuery(name="FilmeLocacao.findAll",query="select fl from FilmeLocacao fl")
})
public class FilmeLocacao implements IEntity{
	private static final long serialVersionUID = 1L;
	
	private Long id;
	private Cliente cliente;
	private Funcionario funcionario;
	private CopiaFilme filme;
	private Integer statusPagamento;
	private Date dataLocacao;
	private Date dataDevolucao;
	private Float preco;
	
	@Id
	@GeneratedValue(strategy = GenerationType.TABLE)
	@Column(name="seq_filme_locacao")
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(cascade={CascadeType.MERGE})
	@JoinColumn(name="seq_cliente",referencedColumnName="seq_cliente")
	public Cliente getCliente() {
		if (cliente==null){
			cliente = new Cliente();
		}
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	@ManyToOne(cascade={CascadeType.MERGE})
	@JoinColumn(name="seq_funcionario",referencedColumnName="seq_funcionario")
	public Funcionario getFuncionario() {
		return funcionario;
	}
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	@ManyToOne
	@JoinColumn(name="seq_copia",referencedColumnName="seq_copia")
	public CopiaFilme getFilme() {
		if (filme == null){
			filme = new CopiaFilme();
		}
		return filme;
	}
	public void setFilme(CopiaFilme filme) {
		this.filme = filme;
	}
	@Column(name="status_pagamento_filme_locacao")
	public Integer getStatusPagamento() {
		return statusPagamento;
	}
	public void setStatusPagamento(Integer statusPagamento) {
		this.statusPagamento = statusPagamento;
	}
	@Column(name="data_locacao")
	@Temporal(TemporalType.DATE)
	public Date getDataLocacao() {
		return dataLocacao;
	}
	public void setDataLocacao(Date dataLocacao) {
		this.dataLocacao = dataLocacao;
	}
	@Column(name="data_devolucao_filme_locacao")
	@Temporal(TemporalType.DATE)
	public Date getDataDevolucao() {
		return dataDevolucao;
	}
	public void setDataDevolucao(Date dataDevolucao) {
		this.dataDevolucao = dataDevolucao;
	}
	@Column(name="preco_locacao_filme_locacao")
	public Float getPreco() {
		return preco;
	}
	public void setPreco(Float preco) {
		this.preco = preco;
	}
}
